\subsection{MySQL 的安装}
MySQL的安装过程是LAMP中最艰辛的，不仅步骤繁杂，编译时间长，有时候还得靠点RP才行。曾经我用了一样的参数，第一次失败，第二次就成功了，\texttt{- -||}

首先还是请先下载：\url{http://dev.mysql.com/downloads/}，我用的是5.1.31版本。MySQL的编译稍微复杂点，毕竟数据是最重要的，而且还需要在编译前先安装一些依赖的软件，我就直接用的Ubuntu源里的了。

1. 安装依赖：
\begin{shaded}
\begin{verbatim}
~$ sudo apt-get install g++ libtool libncurses5-dev
\end{verbatim}
\end{shaded}

值得注意的是，\texttt{libtool}在官方文档中要求的版本是不低于1.5.24，安装之前还是先看下是否符合好点。

2. 建立\texttt{mysql}用户（user）和组（group），专门用于操纵MySQL。
\begin{shaded}
\begin{verbatim}
~$ sudo groupadd -r mysql
~$ sudo useradd -r -g mysql mysql
\end{verbatim}
\end{shaded}

3. 曲折的编译安装过程。
\begin{shaded}
\begin{verbatim}
~$ tar xzvf mysql-5.1.31.tar.gz
~$ cd mysql-5.1.31
~/mysql-5.1.31$ CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 \
> -felide-constructors -fno-exceptions -fno-rtti" \
> ./configure --prefix=/usr/local/mysql \
> --enable-assembler --with-mysqld-ldflags=-all-static \
> --with-charset=utf8 --enable-local-infile
\end{verbatim}
\end{shaded}

别被这行吓着，仔细看下就会发现就是平时的\texttt{./configure}的加强版。添加了一些优化编译的参数和对于MySQL本身的设置。这是关键的一步，如果成功的话，那么你应该会看到以下的提示：
\begin{shaded}
\begin{verbatim}
MySQL has a Web site at http://www.mysql.com/ which carries details on the
latest release, upcoming features, and other information to make your
work or play with MySQL more productive. There you can also find
information about mailing lists for MySQL discussion.

Remember to check the platform specific part of the reference manual for
hints about installing MySQL on your platform. Also have a look at the
files in the Docs directory.

Thank you for choosing MySQL!
\end{verbatim}
\end{shaded}

现在可以放心地安装了：
\begin{shaded}
\begin{verbatim}
~/mysql-5.1.31$ make
~/mysql-5.1.31$ sudo make install
\end{verbatim}
\end{shaded}

这样就算安装完毕了。
\subsection{MySQL 的配置}
在\texttt{support-files}子目录中选定一个适合你的运行环境的配置文件作为MySQL配置文件的基础：
\begin{shaded}
\begin{verbatim}
~/mysql-5.1.31$ sudo cp support-files/my-medium.cnf /etc/my.cnf
\end{verbatim}
\end{shaded}

现在需要修改MySQL安装目录中的一些权限设置：
\begin{shaded}
\begin{verbatim}
~/mysql-5.1.31$ cd /usr/local/mysql
/usr/local/mysql$ sudo chown -R mysql .
/usr/local/mysql$ sudo chgrp -R mysql .
\end{verbatim}
\end{shaded}

然后修改刚才的配置文件\texttt{my.cnf}，注释\texttt{skip-federated}这行，在\texttt{[mysqld]}组中添加\texttt{user = mysql}一行。在\texttt{[mysql]}组中添加\texttt{default-character-set = utf8}，否则以后向表中添加中文数据的时候会报错。

使用Ubuntu系统的需要特别注意一点，检查是否存在\texttt{/etc/mysql/my.cnf}这么一个文件，如果有的话，需要将这个文件重命名或者删除。否则会和我们自己的\texttt{my.cnf}产生冲突。为什么会突然又冒了一个\texttt{my.cnf}出来呢？我看了一下，发现第二个\texttt{my.cnf}是\texttt{mysql-common}这个包中的文件，而KDE和OOo都会依赖于这个包（真是诡异\dots）。

现在到了又一个关键的步骤了，初始化MySQL数据库。之所以关键，和上一个\texttt{configure}一样，这些都是属于会频繁出错的地方。
\begin{shaded}
\begin{verbatim}
/usr/local/mysql$ sudo bin/mysql_install_db --basedir=/usr/local/mysql \
> --user=mysql
\end{verbatim}
\end{shaded}

你很可能会得到找不到某个文件的错误提示，那么解决办法就是重新安装一次，至于是否成功，这得看RP了，XD

如果你RP极佳的话，那么你会很高兴地看到下面的文字：
\begin{shaded}
\begin{verbatim}
Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
/usr/local/mysql/bin/mysqladmin -u root -h HOSTNAME password 'new-password'

Alternatively you can run:
/usr/local/mysql/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/local/mysql/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/local/mysql/scripts/mysqlbug script!

The latest information about MySQL is available at http://www.mysql.com/
Support MySQL by buying support/licenses from http://shop.mysql.com/
\end{verbatim}
\end{shaded}

然后再修改一次权限：
\begin{shaded}
\begin{verbatim}
/usr/local/mysql$ sudo chown -R root .
/usr/local/mysql$ sudo chown -R mysql var
\end{verbatim}
\end{shaded}

现在我们需要来验证一下MySQL是否可以正常使用了。
\begin{shaded}
\begin{verbatim}
/usr/local/mysql$ sudo bin/mysqld_safe &
/usr/local/mysql$ bin/mysqladmin version
\end{verbatim}
\end{shaded}

如果得到类似下面的输出，那么恭喜你！MySQL已经可以正常使用了。
\begin{shaded}
\begin{verbatim}
bin/mysqladmin  Ver 8.42 Distrib 5.1.31, for pc-linux-gnu on i686
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version		5.1.31-log
Protocol version	10
Connection		Localhost via UNIX socket
UNIX socket		/tmp/mysql.sock
Uptime:			1 min 22 sec

Threads: 1  Questions: 1  Slow queries: 0  Opens: 14  Flush tables: 1  
Open tables: 8  Queries per second avg: 0.12
\end{verbatim}
\end{shaded}

现在需要来提高一下MySQL的安全性，MySQL自带了一个很好用的小工具，可以通过向导的形式来进行安全的初始化，你只需要回答Yes或者No就行了，很是方便。注意：在进行此操作前必须先启动MySQL。
\begin{shaded}
\begin{verbatim}
/usr/local/mysql$ sudo bin/mysql_secure_installation
\end{verbatim}
\end{shaded}

除了用刚才的方法启动MySQL以外，还有另一种方法，我比较推荐用这种方法来启动：
\begin{shaded}
\begin{verbatim}
/usr/local/mysql$ sudo share/mysql/mysql.server start
\end{verbatim}
\end{shaded}

这个就和Apache的启动方式很相似了，用起来比较统一。
\subsection{让 MySQL 开机自启动}
这里只提供了Debian系的系统的设置方法，其它的系统可以参考官方文档。
\begin{shaded}
\begin{verbatim}
/usr/local/mysql$ sudo cp share/mysql/mysql.server /etc/init.d/mysql
/usr/local/mysql$ sudo update-rc.d mysql defaults
\end{verbatim}
\end{shaded}